package com.ruoyi.drone.mapper;

import java.util.List;
import com.ruoyi.drone.domain.DroneTaskExecution;

/**
 * 任务执行Mapper接口
 * 
 * @author ruoyi
 * @date 2024-01-01
 */
public interface DroneTaskExecutionMapper 
{
    /**
     * 查询任务执行
     * 
     * @param executionId 任务执行主键
     * @return 任务执行
     */
    public DroneTaskExecution selectDroneTaskExecutionByExecutionId(Long executionId);

    /**
     * 查询任务执行列表
     * 
     * @param droneTaskExecution 任务执行
     * @return 任务执行集合
     */
    public List<DroneTaskExecution> selectDroneTaskExecutionList(DroneTaskExecution droneTaskExecution);

    /**
     * 根据任务ID查询任务执行列表
     * 
     * @param taskId 任务ID
     * @return 任务执行集合
     */
    public List<DroneTaskExecution> selectDroneTaskExecutionListByTaskId(Long taskId);

    /**
     * 根据飞手ID查询任务执行列表
     * 
     * @param pilotId 飞手ID
     * @return 任务执行集合
     */
    public List<DroneTaskExecution> selectDroneTaskExecutionListByPilotId(Long pilotId);

    /**
     * 根据申请ID查询任务执行
     * 
     * @param applicationId 申请ID
     * @return 任务执行
     */
    public DroneTaskExecution selectDroneTaskExecutionByApplicationId(Long applicationId);

    /**
     * 根据任务ID和飞手ID查询任务执行
     * 
     * @param taskId 任务ID
     * @param pilotId 飞手ID
     * @return 任务执行
     */
    public DroneTaskExecution selectDroneTaskExecutionByTaskIdAndPilotId(Long taskId, Long pilotId);

    /**
     * 新增任务执行
     * 
     * @param droneTaskExecution 任务执行
     * @return 结果
     */
    public int insertDroneTaskExecution(DroneTaskExecution droneTaskExecution);

    /**
     * 修改任务执行
     * 
     * @param droneTaskExecution 任务执行
     * @return 结果
     */
    public int updateDroneTaskExecution(DroneTaskExecution droneTaskExecution);

    /**
     * 删除任务执行
     * 
     * @param executionId 任务执行主键
     * @return 结果
     */
    public int deleteDroneTaskExecutionByExecutionId(Long executionId);

    /**
     * 批量删除任务执行
     * 
     * @param executionIds 需要删除的数据主键集合
     * @return 结果
     */
    public int deleteDroneTaskExecutionByExecutionIds(Long[] executionIds);

    /**
     * 检查任务和飞手的执行记录是否已存在
     * 
     * @param taskId 任务ID
     * @param pilotId 飞手ID
     * @return 结果
     */
    public int checkTaskExecutionUnique(Long taskId, Long pilotId);

    /**
     * 更新任务执行状态
     * 
     * @param droneTaskExecution 任务执行
     * @return 结果
     */
    public int updateDroneTaskExecutionStatus(DroneTaskExecution droneTaskExecution);

    /**
     * 更新任务完成度
     * 
     * @param droneTaskExecution 任务执行
     * @return 结果
     */
    public int updateDroneTaskExecutionProgress(DroneTaskExecution droneTaskExecution);

    /**
     * 完成任务执行
     * 
     * @param droneTaskExecution 任务执行
     * @return 结果
     */
    public int completeDroneTaskExecution(DroneTaskExecution droneTaskExecution);

    /**
     * 暂停任务执行
     * 
     * @param droneTaskExecution 任务执行
     * @return 结果
     */
    public int pauseDroneTaskExecution(DroneTaskExecution droneTaskExecution);

    /**
     * 取消任务执行
     * 
     * @param droneTaskExecution 任务执行
     * @return 结果
     */
    public int cancelDroneTaskExecution(DroneTaskExecution droneTaskExecution);
}
